package com.basic;


import jcore.basic.Student;

public class SubStudent extends Student {
	
	//子类的属性覆盖父类的相同属性
	public int age = 999999;  //私有成员
	
	//覆盖父类的相同属性
	public String P = "Child";
	
	//父类没有的属性
	private String notInParent = "哈哈！";
	
	public String getP() {
		return P;
	}
	public SubStudent(String adds) {
		super("Kettel",100L,18); //改变了父类的age成员
		address = adds;
		age = 20;
	}
	
	public String address;
	
	public String getAddress(){
		return address;
	}
	
	//重写父类的方法
	public int getAge(){
		//
		System.out.println("子类独有的属性：" + notInParent);
		System.out.print("==> 多态: SubStudent: ");		
		return age;
	}
	
	public String showMessage(String x) {
		return "I am child "+x+"!";
	}
	
	public void hello(int i) {
		System.out.println("Child say hello!");
	}
	
	public static void main(String[] args) {
		
		//父类引用指向子类对象
		Student s1 = new SubStudent("Baishizhou");
		
		//s1.age看到的是父类的属性age
		System.out.println(s1.age);
		
		//多态s1.getAge()调用了自己的方法，获取到自己的覆盖了父类的属性age
		System.out.println(s1.getAge());
		
		
		//父类的only属性必须是public的，否则不能以s1.only的方式访问
		//System.out.println(s1.only);
		
		//当父类的属性是非public时，必须以getter方式访问
		System.out.println(s1.getOnly());
		
		//子类有getter方法，父类没有，此时用s1是无法调用getter方法的，因为s1只能看到父类的属性和方法
		System.out.println(s1.P);
	}
}
